package com.xjy.system.domain;

import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

import com.baomidou.mybatisplus.annotation.*;
import com.xjy.common.annotation.Excel;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import org.springframework.format.annotation.DateTimeFormat;

import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

/**
 * 项目基本信息对象 sys_proj
 *
 * @author xjy
 * @date 2022-02-08
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("sys_proj")
@Entity
@SQLDelete(sql = "update sys_proj set del_flag=1 where id=?")
@Where(clause = "del_flag=0")
public class SysProj implements Serializable {

	private static final long serialVersionUID=1L;


	/** $column.columnComment */
	@TableId(value = "id")
	@Id
	private Long id;

	/** 项目名称 */
	private String name;

	/** 项目编号 */
	private String number;

	/** 项目性质：新建、在建、维护 */
	private String nature;

	/** 执行状态：未开始、正在进行、已验收……用于后续统计报表 */
	private String status;

	/** 摘要 */
	private String abstracts;

	/** 项目文件如：立项文件、流程 */
	private String file;

	/** 场次 */
	private Long showNum;

	/** 页数 */
	private Long pageNum;

	/** 集数 */
	private Long setNum;

	/** 开机时间 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date onTime;

	/** 关机时间 */
	@DateTimeFormat(pattern = "yyyy-MM-dd")
	private Date offTime;

	/** 项目周期数：比如：三月、半年、一年 */
	private String cycle;

	/** 投资方：甲方 */
	private String investor;

	/** 承接单位：乙方 */
	private String undertakor;

	/** 立项部门 */
	private Integer depart;

	/** 负责人 */
	private String dutior;

	/** 负责人职称：监制、导演 */
	private String dutiorTitle;

	/** 负责人电话 */
	private String dutiorPhone;

	/** 创建时间 */
	@TableField(fill = FieldFill.INSERT)
	private Date createTime;

	/** 修改时间 */
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private Date updateTime;

	/** 删除状态 0. 正常 1. 删除 */
	@TableLogic
	private String delFlag;

	/** 项目规模 */
	private String scale;

	/** 上传时间 */
	private Date uploadTime;

	/** 创建者 */
	@TableField(fill = FieldFill.INSERT)
	private String createBy;

	/** 修改者 */
	@TableField(fill = FieldFill.INSERT_UPDATE)
	private String updateBy;
	/**
	 * 请求参数
	 */
	@TableField(exist = false)
	@Transient
	private Map<String, Object> params = new HashMap<>();

	/** 立项部门名称 */
	private String deptName;


	private Long userId;
	/** 审核状态 0：未审核；1：审核（默认） */
	private Boolean auditStatus;
}
